package com.example.kotlindemo.data

import androidx.lifecycle.LiveData
import java.util.Date

// TaskRepository (TaskRepository.kt)
// 封装了 TaskDao 的操作，提供更高层次的接口给 ViewModel 使用。
// 持有 pendingTasks 和 completedTasks 的 LiveData，直接从 TaskDao 获取。
// 提供方法如 insert（插入新任务）、markTaskAsCompleted（标记任务完成）、markTaskAsPending（标记任务未完成）等，简化 ViewModel 的逻辑。
class TaskRepository(private val taskDao: TaskDao) {

    val pendingTasks: LiveData<List<Task>> = taskDao.getPendingTasks()
    val completedTasks: LiveData<List<Task>> = taskDao.getCompletedTasks()

    suspend fun insert(taskName: String) {
        val newTask = Task(name = taskName)
        taskDao.insertTask(newTask)
    }

    suspend fun update(task: Task) {
        taskDao.updateTask(task)
    }

    suspend fun markTaskAsCompleted(task: Task) {
        if (!task.isCompleted) {
            task.isCompleted = true
            task.completedTimestamp = Date() // 记录完成时间
            taskDao.updateTask(task)
        }
    }

    suspend fun markTaskAsPending(task: Task) {
        if (task.isCompleted) {
            task.isCompleted = false
            task.completedTimestamp = null // 清除完成时间
            taskDao.updateTask(task)
        }
    }
    // 可选: 获取单个任务
    // suspend fun getTask(taskId: Long): Task? = taskDao.getTaskById(taskId)
}